package com.siashan.unipay4j.core.pay;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * 支付订单信息
 *
 * @author siashan
 * @since v1.0.1
 */
@Data
@NoArgsConstructor
public class PayModel {
    /**
     * 商品名称
     *
     * <p>1、支付宝支付必填</p>
     */
    private String subject;
    /**
     * 商品描述
     *
     * <p>1、支付宝支付可空</p>
     */
    private String body;
    /**
     * 附加信息
     */
    private String addition;
    /**
     * 价格
     */
    private BigDecimal price;
    /**
     * 支付平台订单号,交易号
     */
    private String tradeNo;
    /**
     * 商户订单号
     */
    private String outTradeNo;
    /**
     * 银行卡类型
     */
    private String bankType;
    /**
     * 设备信息
     */
    private String deviceInfo;
    /**
     * 支付创建ip
     */
    private String spbillCreateIp;
    /**
     * 付款条码串,人脸凭证，有关支付代码相关的，
     * 微信付款码支付必填
     */
    private String authCode;
    /**
     * 微信专用，，，，
     * WAP支付链接
     */
    private String wapUrl;
    /**
     * 微信专用，，，，
     * WAP支付网页名称
     */

    private String wapName;
    /**
     * 用户唯一标识
     * 微信含 sub_openid 字段
     */
    private String openid;

    /**
     * 订单过期时间
     */
    private Date expirationTime;

    /**
     * 是否需要分账，默认否
     */
    private ProfitSharing profitSharing = ProfitSharing.NO;

    /**
     * 回调地址
     *
     * <p>自定义回调地址会覆盖配置文件中配置的回调地址</p>
     */
     private String notifyUrl;

   /**
     * 订单附加信息，可用于预设未提供的参数，这里会覆盖以上所有的订单信息，
     */
    private Map<String, Object> attr;


    public PayModel(String subject, String body, BigDecimal price, String outTradeNo) {
        this.subject = subject;
        this.body = body;
        this.price = price;
        this.outTradeNo = outTradeNo;
    }

}
